# 作业先完成，才完美
# 第一题  for:简单计数
print('第一题  for:简单计数')
l = [1, 2, 3, 4, 5]
for i in l:
    print(f'value:{i}')
e = enumerate(l)
for i, e in e:
    print(f'index = {i}, value = {e}')

# 第一题 while:简单计数
print('第一题 while:简单计数')
count = 0
while count < 5:
    count += 1
    if count == 2:
        continue
    print(f'count={count}')

count = 0
while True:
    if count == 5:
        break
    count += 1
    print(f'count = {count}')

#第二题 for实现斐波那契函数, 限制在100以内
print('\n第二题 for实现斐波那契函数, 限制在100以内')
def for_method(n):
    l = [0]
    for i, e in enumerate(l):
        if e >= n:
            break
        elif i == 0:
            l.append(1)
        else:
            num = l[i] + l[i - 1]
            if num >= n:
                break
            else:
                l.append(num)
    return l
data = for_method(100)
print(f'for实现100以内的斐波那契数组 = {data}')

#第二题 while实现斐波那契函数, 限制在100以内
print('第二题 while实现斐波那契函数, 限制在100以内')
def while_method(n):
    l = [0]
    while l[len(l) - 1] < n:
        if len(l) == 1:
            l.append(1)
        else:
            num = l[len(l) - 1] + l[len(l) - 2]
            if num >= n:
                break
            else:
                l.append(num)
    return l
data = while_method(100)
print(f'while实现100以内的斐波那契数组 = {data}')

# 第三题 在第二周-第一节课我们实现的简单计算器的基础上, 对参数进行检查, 如果报错就抛出我们自定义异常ParamsError
print('\n第三题：实现的简单计算器')
class ParamsError(Exception):
    pass

#加法
def add(a, b):
    return a + b;
#减法
def deduce(a, b):
    return a - b;
#乘法
def multip(a, b):
    return a * b;
#除法
def division(a, b):
    return a / b;
#整除
def divide(a, b):
    return a // b;
#取余
def modulo(a, b):
    return a % b;
#开方
def sqrt(a, b):
    return a ** (1/b);

print('***********欢迎使用python简单计算器*********')
def calculator():
    while True:
        a = input('请输入第一个数：')
        try:
            int(a)
        except ValueError:
            raise ParamsError('输入参数不合法')
        b = input('请输入第二个数：')
        try:
            int(b)
        except ValueError:
            raise ParamsError('输入参数不合法')
        print('请选择计算方法：1、加法; 2、减法; 3、乘法 4、除法 5、整除 6、取余 7、开方')
        choose = input('请输入：')
        try:
            int(choose)
        except ValueError:
            raise ParamsError('请输入1-7之间的数')
        if int(choose) == 1:
            c = add(int(a), int(b))
            print(f'{a}+{b}={c}')
        elif int(choose) == 2:
            c = deduce(int(a), int(b))
            print(f'{a}-{b}={c}')
        elif int(choose) == 3:
            c = multip(int(a), int(b))
            print(f'{a}*{b}={c}')
        elif int(choose) == 4:
            try:
                c = division(int(a), int(b))
            except ZeroDivisionError:
                raise ParamsError('分母不可以为0')
            print(f'{a}/{b}={c}')
        elif int(choose) == 5:
            c = divide(int(a), int(b))
            print(f'{a}//{b}={c}')
        elif int(choose) == 6:
            c = modulo(int(a), int(b))
            print(f'{a}%{b}={c}')
        elif int(choose) == 7:
            c = sqrt(int(a), int(b))
            print(f'{a}**{b}={c}')
        else:
            raise ParamsError('请输入1-7之间的数')
        jixu = input('继续请按1，按其他键则程序终止\n')
        try:
            int(jixu)
        except ValueError:
            raise ParamsError('程序终止')
        if int(jixu) != 1:
            break
calculator()